﻿using Core.Entities.Mater;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infrastructure.Data.Configurations.Mater
{
    internal class SupplierConfiguration : IEntityTypeConfiguration<Supplier>
    {
        public void Configure(EntityTypeBuilder<Supplier> builder)
        {
            // 设置表名
            builder.ToTable("BS_Supplier");

            // 配置主键
            builder.HasKey(s => s.Id);

            // 属性配置
            builder.Property(s => s.Id)
                .HasColumnName("ID")
                .HasMaxLength(50);

            builder.Property(s => s.SuCode)
                .HasColumnName("SuCode")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(s => s.SuName)
                .HasColumnName("SuName")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(s => s.CreateTime)
                .HasColumnName("CreateTime")
                .HasColumnType("datetime2(7)")
                .IsRequired(false);

            builder.Property(s => s.CreateBy)
                .HasColumnName("CreateBy")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(s => s.UpdateTime)
                .HasColumnName("UpdateTime")
                .HasColumnType("datetime2(7)")
                .IsRequired(false);

            builder.Property(s => s.UpdateBy)
                .HasColumnName("UpdateBy")
                .HasMaxLength(255)
                .IsRequired(false);

            builder.Property(s => s.Remaker)
                .HasColumnName("Remaker")
                .HasMaxLength(500)
                .IsRequired(false);

            builder.Property(s => s.IsDeleted)
                .HasColumnName("IsDeleted");

            // 索引配置
            builder.HasIndex(s => s.SuCode)
                .HasDatabaseName("IX_BS_Supplier_Su_Code");
        }
    }
}
